//#include<iostream.h >
#include<stdio.h>
#include<stdlib.h>
#include "queue.h"

int main ()
{
  LinkQueue* jobqueue;
  int n,i = 0;
  int timing = 0;                            //时刻
  int temp_num,temp_art,temp_bur;
  struct Job *jobing[10];                   //任务，结构体数组，10个
  jobqueue = (LinkQueue*)malloc(sizeof(LinkQueue)*4);
  for(i=1; i<4; i++)                        //初始化所有队列,这里的队列是三级就绪队列
		InitQueue(&jobqueue[i]);

  printf("调试点1完毕\n");

  printf("请输入任务个数：\n");
  scanf("%d",&n);
  if(n == 0){
	  printf("没有任务，请重新输入!\n" );
	  scanf("%d",&n);
  }

  printf("请输入各个任务信息：\n");
  printf("任务号 到达时间 运行时间\n");
  for(i=0;i<n;i++) {
      scanf("%d %d %d",&temp_num, &temp_art, &temp_bur);
      jobing[i]->jobnum = &temp_num;
      printf("%p,%d\n",jobing[i]->jobnum,*jobing[i]->jobnum);
      jobing[i]->arrivetime = &temp_art;
      printf("%p,%d\n",jobing[i]->arrivetime,*jobing[i]->arrivetime);
      jobing[i]->burst = &temp_bur;
      printf("%p,%d\n",jobing[i]->burst,*jobing[i]->burst);
  }

printf("%d,调试点2完毕\n",i);
for(i=0;i<n;i++)
    printf("%d",&jobing[i]->jobnum);
  i=0;
  while(i!=n||!(EmptyQueue(&jobqueue[1])&&EmptyQueue(&jobqueue[2])    //确认三个队列是否为空（判断三级队列中是否还有阻塞任务）
		 && EmptyQueue(&jobqueue[3]))){
	  while(timing == jobing[i]->arrivetime)
	  {
		 create(jobqueue,*jobing[i]);//创建任务
		 i++;
         printf("调试点3完毕\n");
	  }
	  function(jobqueue,timing);//任务运行
	  timing++;
  }

  for(i=1; i<4; i++)
		ClearQueue(&jobqueue[i]);//清空队列

        return 0;
}
